home *** CD-ROM | disk | FTP | other *** search
/ C & C++ Multimedia Cyber Classroom / C and C++ Multimedia Cyber Classroom (Prentice Hall) (1998).iso / cpphtp2 / code.jar / code / ch07 / fig07_08.txt < prev    next >
Text File  |  1998-02-27  |  4KB  |  124 lines

  1. 1   // Fig. 7.8: time6.h
  2. 2   // Cascading member function calls.
  3. 3   
  4. 4   // Declaration of class Time.
  5. 5   // Member functions defined in time6.cpp
  6. 6   #ifndef TIME6_H
  7. 7   #define TIME6_H
  8. 8   
  9. 9   class Time {
  10. 10  public:
  11. 11     Time( int = 0, int = 0, int = 0 );  // default constructor
  12. 12  
  13. 13     // set functions
  14. 14     Time &setTime( int, int, int ); // set hour, minute, second
  15. 15     Time &setHour( int );    // set hour
  16. 16     Time &setMinute( int );  // set minute
  17. 17     Time &setSecond( int );  // set second
  18. 18  
  19. 19     // get functions (normally declared const)
  20. 20     int getHour() const;     // return hour
  21. 21     int getMinute() const;   // return minute
  22. 22     int getSecond() const;   // return second
  23. 23  
  24. 24     // print functions (normally declared const)
  25. 25     void printMilitary() const;  // print military time
  26. 26     void printStandard() const;  // print standard time
  27. 27  private:
  28. 28     int hour;              // 0 - 23
  29. 29     int minute;            // 0 - 59
  30. 30     int second;            // 0 - 59
  31. 31  };
  32. 32  
  33. 33  #endif
  34. 34  // Fig. 7.8: time.cpp 
  35. 35  // Member function definitions for Time class.
  36. 36  #include "time6.h"
  37. 37  #include <iostream.h>
  38. 38  
  39. 39  // Constructor function to initialize private data.
  40. 40  // Calls member function setTime to set variables.
  41. 41  // Default values are 0 (see class definition).
  42. 42  Time::Time( int hr, int min, int sec ) 
  43. 43     { setTime( hr, min, sec ); }
  44. 44  
  45. 45  // Set the values of hour, minute, and second.
  46. 46  Time &Time::setTime( int h, int m, int s )
  47. 47  {
  48. 48     setHour( h );
  49. 49     setMinute( m );
  50. 50     setSecond( s ); 
  51. 51     return *this;   // enables cascading
  52. 52  }
  53. 53  
  54. 54  // Set the hour value
  55. 55  Time &Time::setHour( int h )
  56. 56  {
  57. 57     hour = ( h >= 0 && h < 24 ) ? h : 0;
  58. 58  
  59. 59     return *this;   // enables cascading
  60. 60  }
  61. 61  
  62. 62  // Set the minute value
  63. 63  Time &Time::setMinute( int m )
  64. 64  {
  65. 65     minute = ( m >= 0 && m < 60 ) ? m : 0;
  66. 66  
  67. 67     return *this;   // enables cascading
  68. 68  }
  69. 69  
  70. 70  // Set the second value
  71. 71  Time &Time::setSecond( int s )
  72. 72  {
  73. 73     second = ( s >= 0 && s < 60 ) ? s : 0;
  74. 74  
  75. 75     return *this;   // enables cascading
  76. 76  }
  77. 77  
  78. 78  // Get the hour value
  79. 79  int Time::getHour() const { return hour; }
  80. 80  
  81. 81  // Get the minute value
  82. 82  int Time::getMinute() const { return minute; }
  83. 83  
  84. 84  // Get the second value
  85. 85  int Time::getSecond() const { return second; }
  86. 86  
  87. 87  // Display military format time: HH:MM:SS
  88. 88  void Time::printMilitary() const
  89. 89  {
  90. 90     cout << ( hour < 10 ? "0" : "" ) << hour << ":"
  91. 91          << ( minute < 10 ? "0" : "" ) << minute;
  92. 92  }
  93. 93  
  94. 94  // Display standard format time: HH:MM:SS AM (or PM)
  95. 95  void Time::printStandard() const
  96. 96  {
  97. 97     cout << ( ( hour == 0 || hour == 12 ) ? 12 : hour % 12 ) 
  98. 98          << ":" << ( minute < 10 ? "0" : "" ) << minute 
  99. 99          << ":" << ( second < 10 ? "0" : "" ) << second
  100. 100         << ( hour < 12 ? " AM" : " PM" );
  101. 101 }
  102. 102 // Fig. 7.8: fig07_08.cpp
  103. 103 // Cascading member function calls together
  104. 104 // with the this pointer
  105. 105 #include <iostream.h>
  106. 106 #include "time6.h"
  107. 107 
  108. 108 int main()
  109. 109 {
  110. 110    Time t;
  111. 111 
  112. 112    t.setHour( 18 ).setMinute( 30 ).setSecond( 22 );
  113. 113    cout << "Military time: ";
  114. 114    t.printMilitary();
  115. 115    cout << "\nStandard time: ";
  116. 116    t.printStandard();
  117. 117 
  118. 118    cout << "\n\nNew standard time: ";
  119. 119    t.setTime( 20, 20, 20 ).printStandard();
  120. 120    cout << endl;
  121. 121 
  122. 122    return 0;
  123. 123 }
  124.